In current networks, network traffic is mainly composed of video service traffic. On Oct. 20 2010, Sandvine published a monitoring report on network traffic, in which video service traffic from Netflix took 20 percent of downstream data from PM 8:00 to PM 10:00 in all America. It is predicted that video service traffic will take 91 percent of network traffic by 2014.
Video data is transmitted in the format of TCP packets by means of a sliding window transmission mechanism, particularly in the following process.
Step A: a TCP connection is established between a client and a server; the server and the client transmit their maximum data reception sizes to each other.
It should be noted that before receiving a TCP ACK packet (i.e., a TCP acknowledgement message with an ACK flag bit in the TCP header of the message being set to 1) from the client, the amount of data the server transmits in one transmission will not exceed the maximum data reception size of the client. At the same time, the client carries its current maximum data reception size in the TCP ACK packet (i.e., as identified in the window field of the TCP header);
The send window of the server, i.e., the size of data that is transmitted in one transmission by the server is not larger than that of the smaller one between the maximum data reception size of the client and a congestion window cwnd.
Step B: the server sends a first TCP packet;
The server receives the first TCP ACK packet and sets the congestion window cwnd to two packets, i.e., the server may send two TCP packets to the client in one transmission;
The server sends two subsequent TCP packets continuously, receives a second and third TCP ACK packets and sets the congestion window cwnd to 4, i.e., the server may send four TCP packets to the client in one transmission;
After the server subsequently sends TCP packets and receives all TCP ACK packets for this TCP connection from the client, cwnd is increased by 1 every time the server receives a TCP ACK packet, which is known as SS (slow start) phase, until the congestion window cwnd is increased to a SS phase threshold ssthresh, which is 65536 bytes for most TCP implementations.
Step C: when the congestion window cwnd is increased to the SS phase threshold, and after it is acknowledged by the client with TCP ACK that all TCP packets sent to the client from the server have been received successfully, the server congestion window is increased by 1, which is known as CA (congestion avoidance), until the congestion window cwnd reaches the maximum data reception size of the client.
Step D: the client checks the sequence number of a received TCP packet, and when the sequence number in the TCP header of the TCP packet is larger than the sum of the sequence number in the TCP header of a TCP packet previously received by the client and the number of bytes in the payload (excluding the TCP header) of the TCP packet received previously, indicating the loss of a TCP packet, the client sends TCP ACK packets repeatedly to request the server to retransmit the lost TCP packet.
After noticing packet loss, the server sets the slow start phase threshold ssthresh to half of the current congestion window cwnd, resets the congestion window to 1, and re-enters the slow start phase (SS).
It can be seen from the above TCP packet handling process, after TCP packet loss occurs, the TCP congestion window cwnd is rapidly reduced, and it is also necessary to spend time to handle retransmission, which means a rapid drop in TCP throughput. For those real time applications sensitive to latency or throughput, such as video communication, user experience may be degraded significantly.
To address this problem, congestion window cwnd may be disabled on the server, causing that it is unable to adjust the number of bytes sent by the server according to network congestion conditions, thereby further aggravating network congestion and reducing network resource utilization ratio.